package br.com.centralit.citcorpore.metainfo.util; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class JSONUtil { public static Map<String, Object> convertJsonToMap(final String strData, final boolean convKeyToUpperCase) { if (strData == null) { return null; } final JsonParser parserJson = new JsonParser(); final JsonElement element = parserJson.parse(strData); if (JsonObject.class.isInstance(element)) { final JsonObject object = (JsonObject) element; if (object != null) { final Set<Map.Entry<String, JsonElement>> set = object.entrySet(); final Iterator<Map.Entry<String, JsonElement>> iterator = set.iterator(); final Map<String, Object> map = new HashMap<>(); while (iterator.hasNext()) { final Map.Entry<String, JsonElement> entry = iterator.next(); String key = entry.getKey(); final JsonElement value = entry.getValue(); if (convKeyToUpperCase) { if (key != null) { key = key.toUpperCase(); } } if (!value.isJsonPrimitive()) { if (value.isJsonArray()) { map.put(key, JSONUtil.convertJsonArrayToCollection((JsonArray) value, convKeyToUpperCase)); } else { map.put(key, JSONUtil.convertJsonToMap(value.toString(), convKeyToUpperCase)); } } else { map.put(key, value.getAsString()); } } return map; } } if (JsonArray.class.isInstance(element)) { final JsonArray array = (JsonArray) element; final Map<String, Object> map = new HashMap<>(); map.put("ARRAY", JSONUtil.convertJsonArrayToCollection(array, convKeyToUpperCase)); return map; } return null; } public static Collection<Map<String, Object>> convertJsonArrayToCollection(final JsonArray array, final boolean convUpperCase) { if (array != null) { final Iterator<JsonElement> iterator = array.iterator(); final Collection<Map<String, Object>> col = new ArrayList<>(); while (iterator.hasNext()) { final Object obj = iterator.next(); col.add(JSONUtil.convertJsonToMap(obj.toString(), convUpperCase)); } return col; } return null; } }